]> dgit.raspbian.org Git - gnome-shell.git/commit
status/location: Handle geoclue not being activatable
authorWill Thompson <wjt@endlessos.org>
Wed, 8 Mar 2023 20:44:36 +0000 (20:44 +0000)
committerMarge Bot <marge-bot@gnome.org>
Sun, 19 Mar 2023 12:46:50 +0000 (12:46 +0000)
commitab0c795e814e631b144f18cc495c6f9225be8964
tree5938babad92cdd9309259c29f0d54b136c733c1f
parente258cff264744be08d7e3d6457bdd34d781b1076
status/location: Handle geoclue not being activatable

In GNOME OS, due to a misconfiguration, geoclue was configured without
systemd support. In that configuration, geoclue does not install its
systemd .service file (geoclue.service) but it (incorrectly) includes
the following line in its D-Bus service file:

    SystemdService=geoclue.service

As a result, when dbus-daemon tried to activate it at gnome-shell's
request, it would fail with:

    Unit geoclue.service not found

Then, GeoclueAgent._onGeoclueVanished() would be called, as the
name_vanished_handler passed to Gio.bus_watch_name(). This is consistent
with Gio.bus_watch_name()'s documentation:

> You are guaranteed that one of the handlers will be invoked after
> calling this function.

But that function assumed that this._managerProxy is defined, leading
to:

    JS ERROR: TypeError: this._managerProxy is undefined
    _onGeoclueVanished@resource:///org/gnome/shell/ui/status/location.js:163:9

Fix this by checking for nullishness of this._managerProxy. (Strictly
speaking, it's undefined rather than being null, but other code in this
file already uses the vaguer '!= null' test, which considers undefined
to be null.)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2689>
js/ui/status/location.js